In large-scale distributed and cloud computing environments, database systems may run thousands of transactions per minute servicing client requests. All or part of the data on one database resource may be migrated to another database resource for maintenance or other reasons. It is generally desirable to avoid data loss during the migration as well as minimize loss of read availability. Sometimes, the database is taken off-line during migration to ensure that data is not corrupted during the migration operation. However, some databases can be very large and take a long time to copy, making it impractical or unattractive to take a database offline and unavailable to clients for long periods of time while data is being copied.